# 2024.07.27力扣网刷题
# 最小绝对差——数组、排序——简单
# 给你个整数数组 arr，其中每个元素都 不相同。
# 请你找到所有具有最小绝对差的元素对，并且按升序的顺序返回。
# 每对元素对[a, b] 如下：
# a, b 均为数组 arr 中的元素
# a < b
# b - a 等于 arr 中任意两个元素的最小绝对差
# 示例 1：
# 输入：arr = [4, 2, 1, 3]
# 输出： [[1, 2], [2, 3], [3, 4]]
# 示例 2：
# 输入：arr = [1, 3, 6, 10, 15]
# 输出： [[1, 3]]
# 示例 3：
# 输入：arr = [3, 8, -10, 23, 19, -4, -14, 27]
# 输出： [[-14, -10], [19, 23], [23, 27]]
# 提示：
# 2 <= arr.length <= 10 ^ 5
# - 10 ^ 6 <= arr[i] <= 10 ^ 6

class Solution(object):
    def minimumAbsDifference(self, arr):
        """
        :type arr: List[int]
        :rtype: List[List[int]]
        """
        # 方法一：sort排序
        arr.sort()
        ans = []
        min = arr[1] - arr[0]
        for i in range(1, len(arr)):
            if arr[i] - arr[i - 1] < min:
                min = arr[i] - arr[i - 1]
                while len(ans):
                    ans.pop()
                ans.append([arr[i - 1], arr[i]])
            elif arr[i] - arr[i - 1] == min:
                ans.append([arr[i - 1], arr[i]])
        return ans


arr = [40,11,26,27,-20]
print(Solution().minimumAbsDifference(arr))